function greeter(person:string) {
  return 'hello,' + person
}


const user = "Jane"
const sum = (a: number) => (b: number) => a + b
// 等价于
const sum2 = function (a:number){
  return function add(b:number){
    return a + b
  }
}

console.log(sum(1)(2))

const a:void = undefined //只能把undefined赋值给void

function v():void{ // 无返回值（即返回undefined）的funcition返回类型也是void
  console.log(123)
}

function s():string{ //一个返回string的function
  return ''
}

//undefined 和null是任何类型的子类型,默认情况下null和undefined可以赋值给任何类型的变量，
// 但是项目开启 --strictNullChecks 检测后，null 和 undefined 只能赋值给 any和本身
let undf:undefined = undefined

let nul:null = null

let num:number 
num = 1

const max=BigInt(Number.MAX_SAFE_INTEGER);
const max1 = max + 1n
const max2 = max + 2n

console.log(max1 ===max2);

const sym1 = Symbol('key1');
const sym2 = Symbol('key2');
// console.log(sym1 === sym2); 提示：此条件将始终返回 "false"，因为类型 "typeof sym1" 和 "typeof sym2" 没有重叠。
console.log(Symbol('key1') === Symbol('key1') ); //false

// 其他类型 any、unknown、never
// any和unknown都可以赋值任何类型，但是在进行具体赋值前，any类型可以进行引用或调用，但是unknown类型不允许
let unkwn:unknown;
// unkwn();  // ERROR

let ay:any
ay();